﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Net.Sockets;
using System.Timers;
using System.Threading;
using System.Windows.Threading;

namespace StudybotWPF
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        //klasse initaliseren
        IRCclass testje = new IRCclass();
        
        public MainWindow()
        {            
            InitializeComponent();            
        }

        private void ButtonConnect_Click(object sender, RoutedEventArgs e)
        {
            //method in klasse oproepen, deze method connecteerd met de server
            testje.connect(txtNickName.Text, txtServer.Text, txtChannel.Text);
            //thread aanmaken, hierdoor zal ie ontvangen van code in een apparte thread doen, en dus het programma niet laten vastlopen.
            Thread lolzor = new Thread(new ThreadStart(testje.reading));
            //Delegate event aanmaken om vanuit klasse naar de textboxen te schrijven.
            testje.schrijven += new IRCclass.writelinetoconsole(testje_Schrijven);
            //thread starten
            lolzor.Start();

            
            

        }
        void testje_Schrijven(string TeSchrijven)
        {
            //threads kunnen niet in elkaars items schrijven, daarom moeten we met de dispatcher en invoke items van de ene naar de andere thread doorgeven (de eerste thread is de grafishe zever en alles wat je niet in een apparte thread steekt.)
            Application.Current.Dispatcher.Invoke(new Action(delegate { tblockIRC.Text += TeSchrijven + Environment.NewLine ; }));
        }

        private void btnSQLConnect_Click(object sender, RoutedEventArgs e)
        {

        }
        
    }
}
